<?php

class Ajax extends TPage {

    public function onLoad($param) {
        parent::onLoad($param);
        if (!$this->IsPostBack) {
            $html = "";
            $op = $this->Request["op"];

            switch ($op) {
                case "buscaPaciente":
                    $html = $this->buscaPaciente();
                    break;
                case "grabarPaciente":
                    $html = $this->grabarPaciente();
                    break;
                case "cancelarReserva":
                    $html = $this->cancelarReserva();
                    break;
                case "obtenerPaciente":
                    $html = $this->obtenerPaciente();
                    break;
                case "reservarHora":
                    $html = $this->reservarHora();
                    break;
                default:
                    break;
            }
            echo rtrim($html);
        }
    }

    public function reservarHora() {
        $bloques = $this->Request["bloques"];
        $fecha = $this->Request["fecha"];
        $idPaciente = $this->Request["idPaciente"];
        $idCentro = $this->Request["idCentro"];
        $idUsuario = $this->Request["idUsuario"];
        $idReserva = -1;

        try {
            $oReserva = new Reserva();
            $oReserva->setBloques($bloques);
            $oReserva->setFecha($fecha);
            $oReserva->setIdPaciente($idPaciente);
            $oReserva->setIdCentro($idCentro);
            $oReserva->setIdUsuario($idUsuario);
            $oReserva->setComentarios("");
            $oReserva->setTipo(1);
            $oReserva->setEstado(1);

            $oReservaBLL = new ReservaBLL();
            $idReserva = $oReservaBLL->grabar($oReserva);

            if (is_int($idReserva) && $idReserva > 0) {
                return $idReserva;
            } else {
                return -200;
            }
        } catch (Exception $e) {
            return -200;
        }
    }

    public function obtenerPaciente() {
        try {
            $idPaciente = $this->Request["idPaciente"];
            $oPaciente = new Paciente();
            $oPacienteBLL = new PacienteBLL();
            $oPaciente = $oPacienteBLL->obtenerPorId($idPaciente);
            $arrPaciente = array("id" => $oPaciente->getId(),
                "nombre" => $oPaciente->getNombre(),
                "apellido" => $oPaciente->getApellido(),
                "telefono" => $oPaciente->getTelefono());
            $json = json_encode($arrPaciente);
            return $json;
        } catch (Exception $e) {
            
        }
    }

    private function cancelarReserva() {
        $resultado;
        try {
            $id = $this->Request["idReserva"];
            $oReservaBLL = new ReservaBLL();
            $oReservaBLL->eliminar($id);
            $resultado = "1";
        } catch (Exception $e) {
            $resultado = "0";
        }
        return $resultado;
    }

    private function grabarPaciente() {
        $arrResultado = array();
        try {
            $rut = Util::isNull($this->Request["rut"], "");
            $email = Util::isNull($this->Request["email"], "");
            $nombre = Util::isNull($this->Request["nombre"], "");
            $apellido = Util::isNull($this->Request["apellido"], "");
            $telefono = Util::isNull($this->Request["telefono"], "");
            $idCentro = Util::isNull($this->Request["idCentro"], "");

            $oPaciente = new Paciente();
            $oPaciente->setRut($rut);
            $oPaciente->setEmail($email);
            $oPaciente->setNombre($nombre);
            $oPaciente->setApellido($apellido);
            $oPaciente->setTelefono($telefono);

            $oPacienteBLL = new PacienteBLL();
            $id = $oPacienteBLL->grabarDatosMinimos($oPaciente);

            if (!(Util::isNullOrEmpty($id))) {
                if ((int) $id > 0) {
                    $arrResultado = array("ok" => 1, "idPaciente" => $id, "nombreCompleto" => $nombre . " " . $apellido, "idCentro" => $idCentro);
                } else {
                    $arrResultado = array("ok" => 0);
                }
            } else {
                $arrResultado = array("ok" => 0);
            }
        } catch (Exception $e) {
            $arrResultado = array("ok" => 0);
        }
        return json_encode($arrResultado);
    }

    public function buscaPaciente() {
        $consulta = $this->Request["term"];

        $oPacienteBLL = new PacienteBLL();
        $arrPaciente = $oPacienteBLL->obtenerPorBusqueda($consulta);
        $arrAux[] = array("id" => "-1", "label" => "NUEVO PACIENTE", "value" => "NUEVO PACIENTE");

        foreach ($arrPaciente as $paciente) {
            $arrAux[] = array("id" => $paciente->getId(), "label" => $paciente->getNombre(), "value" => $paciente->getNombre());
        }

        return json_encode($arrAux);
    }
}
?>